nohup是 Linux/Unix 系统中用于让命令在后台持续运行的工具,即使用户关闭终端或注销也不会中断进程
。它的核心功能是忽略挂起信号(SIGHUP),确保任务稳定执行。

🧠 什么是 nohup?

  • 全称:no hang up(不挂断)
  • 作用:防止进程因终端关闭而被系统终止
  • 原理:忽略 SIGHUP 信号,让进程在后台继续运行

🛠 nohup 命令语法

nohup command [args] > output.log 2>&1 &
  • command:要执行的命令或脚本
  • >:重定向标准输出
  • 2>&1:将标准错误输出重定向到标准输出
  • &:在后台运行命令

📌 常见用法示例

1. 基本后台运行

nohup ./script.sh &

输出默认写入 nohup.out 文件。

2. 自定义输出文件

nohup ./script.sh > run.log 2>&1 &

将标准输出和错误输出都写入 run.log

3. 忽略所有输出

nohup ./script.sh > /dev/null 2>&1 &

适用于不需要日志的场景。

🔍 nohup 的输出行为

  • 默认输出文件为当前目录下的 nohup.out
  • 如果当前目录不可写,则输出到 $HOME/nohup.out
  • 可使用 >>> 重定向输出到其他文件

🧩 nohup 与后台任务管理

  • 查看进程:

    ps -ef | grep script.sh
    
  • 终止进程:

    kill -9 <PID>
    
  • 查看任务列表:

    jobs
    
  • 恢复前台任务:

    fg %1
    

⚠️ 注意事项

  • nohup 只能忽略 SIGHUP,不能防止 SIGTERM 或 SIGKILL
  • 建议配合 & 使用以实现真正的后台运行
  • 对于复杂任务,推荐使用 tmuxscreensystemd

✅ 适用场景

  • 远程服务器运行长时间任务(如模型训练、数据备份)
  • 启动后台服务(如 Web 服务、定时任务)
  • 防止 SSH 断开导致任务中断
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-10-10 17:50:57

results matching ""

    No results matching ""